﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace Ssb.Logic.Input
{
    public delegate void InputEffect(ref Fighter rf);

    public abstract class IPlayerInputHandler
        : GameComponent
    {
        Dictionary<Keys[], InputEffect> InputMap;

        public IPlayerInputHandler(Game game)
            : base(game)
        {
            InputMap = new Dictionary<Keys[], InputEffect>();
        }

        /// <summary>
        /// The purpose of CallForInput is to call the appropriate InputEffect from the Dictionary for the 
        /// provided KeyboardState.
        /// </summary>
        /// <param name="ks">The KeyboardState to ananlyse and call for.</param>
        public abstract void CallForInput(KeyboardState ks);
        public abstract override void Initialize();
        public abstract override void Update(GameTime gt);
    }
}
